const express = require('express');
const path = require('path');
require('dotenv').config(); // 引入环境变量管理模块，需先安装dotenv

const app = express();

// 日志中间件，改进输出格式
function logger(req, res, next) {
  const time = new Date();
  console.log(`[${time.toISOString()}] ${req.method} ${req.path}`);
  next();
}
app.use(logger);

// 静态资源托管（如果需要）
app.use(express.static(path.join(__dirname, 'public')));

// 路由分离，引入并注册
const userRouter = require('./router/user');
app.use('/user', userRouter);

// 可以按需引入更多路由模块，例如：
// const productRouter = require('./router/product');
// app.use('/product', productRouter);

// 404处理
app.use((req, res) => {
  res.status(404).sendFile(path.join(__dirname, 'views/404.hbs')); // 假设404.html位于views目录下
});

// 错误处理中间件，注意错误必须被下一个中间件捕获
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).sendFile(path.join(__dirname, 'views/500.hbs')); // 同样，500.html位于views目录
});

// 从环境变量中获取端口号
const PORT = process.env.PORT || 3000;

app.listen(PORT, () => {
  console.log(`服务已启动，监听端口: ${PORT}`);
});